<?php 
class CategoryModel extends Model{
	// 定义表名
	public $table = 'f_category';
	// 自动验证
	public $validate = array(
		array('cname','nonull','分类名称不能为空',2,3),
		array('sort','nonull','分类排序不能为空',2,3),
		array('sort','num:1,65535','分类排序请填写1到65535的排列数字',2,3)
		);

	// 添加顶级分类
	public function add_data(){
		// 触发自动验证
		if (!$this->create()) {
			return false;
		}
		return $this->add();
	}

	// 添加子级分类
	public function add_son(){
		// 触发自动验证
		if (!$this->create()) {
			return false;
		}
		return $this->add();

	}

	// 修改分类
	public function edit_data(){
		// 获得cid
		$cid = Q('cid',0,'intval');
		// 触发自动验证
		if (!$this->create()) {
			return false;
		}
		// 更新数据
		$this->where("cid={$cid}")->update();
		return true;
	}
	// 获得除自己和自己子级的其他数据
	public function get_choose($cid){
		// 获得所有数据
		$data = $this->all();
		// 获得自己的子集的cid，找的时候去除cid
		$son_cate = $this->get_son($data,$cid);
		// 压入自己的cid
		$son_cate[] = $cid;
		// 把数组组合成字符串 用implode
		$soncid = implode(',', $son_cate);
		// 找到除了$soncid的其他标签
		$data = $this->where("cid not in({$soncid})")->all();
		// p($son_cate);die;
		return Data::tree($data,'cname');

	}

	// 获得自己子级的cid
	public function get_son($data,$cid){
		// 声明一个数组
		$temp = array();
		// 循环所有标签
		foreach ($data as $v) {
			// 如果是子级分类就压入数组
			if ($v['pid']==$cid) {
				$temp[]=$v['cid'];
				// 递归子级分类，看子级分类里是否有还有子级
				$temp = array_merge($temp,$this->get_son($data,$v['cid']));
			}
		}
		// 反出数组
		return $temp;
	}




}














 ?>